package com.yilin.tms.user.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.yilin.tms.core.application.PageData;
import com.yilin.tms.core.entity.user.organize.Cooperate;
import com.yilin.tms.core.entity.user.organize.Organize;
import com.yilin.tms.core.entity.user.account.Account;

import java.util.List;

public interface IOrganizeService extends IService<Organize> {

    void organizeRegister(Organize organize, Account account);

    List<Organize> getOrganizeListBySuperOrganizeId(String superOrganizeId);

    void dismissOrganize(Account loginUser, Organize organize);

    void monthlyUpdateRating();

    List<Cooperate> getUserCooperateApplyList(Account loginUser);

    void applyUserCooperate(Account loginUser, String targetOrganizeId);

    void agreeCooperateApply(Account loginUser, String cooperateId);

    void refuseCooperate(Account loginUser, String targetOrganizeId);

    Cooperate getCooperate(Account loginUser, String targetOrganizeId);

    PageData<Organize> getCooperateOrganizePage(Account loginUser, Organize query, Integer page, Integer limit);

    Organize getOrganizeById(String organizeId);

    List<Organize> getOrganizeListByMemberTypeId(String id);

    List<Organize> getGroupOrganizeList(String groupOrganizeId);

    PageData<Organize> getAuthorizedOrganizePage(Organize query, Integer page, Integer limit);

    PageData<Organize> getBelowOrganizePage(Organize query, Integer start, Integer limit);

    PageData<Organize> getBelowOrganizeBankCardPage(Organize query, Integer page, Integer limit);

    PageData<Organize> getLowerOrganizePage(Organize query, Integer page, Integer limit);

    void updateOrganize(Account loginUser, Organize organize, Organize localOrganize);

    Organize getAdminOrganize();

    PageData<Organize> getPlatCanCooperateOrganizePage(Account loginUser, Organize query, Integer page, Integer limit);

    List<String> getCooperateShipperIdList(String organizeId);

    List<Organize> getOrganizeListByIds(String[] organizeIds);

    List<Organize> getTruckOrganizeList();
}
